'''
推导式：
    1.推导式是一种从一个数据序列构建另一个新的数据序列的结构体。
    2.推导式是典型的python式写法，它是一种简洁的方式，用来创建新的列表。
    3.推导式的语法：[表达式 for 变量 in 列表 if 条件表达式]
    4.推导式的执行过程：
        1.从列表中取出一个元素，赋值给变量。
        2.执行表达式，将表达式的结果添加到新的列表中。
        3.重复步骤1和步骤2，直到列表中的所有元素都被取出。
'''
#1.列表推导式
#1.1使用原始的方式创建列表：从1-10的列表
lst1=[1,2,3,4,5,6,7,8,9,10] 
print(lst1) # 输出列表，类型是list
#1.2使用推导式创建列表：从1-10的列表
lst2=[i for i in range(1,11)] 
print(lst2) # 输出列表，类型是list
#1.3使用推导式创建列表：从1-10的列表，但是只保留偶数
lst3=[i for i in range(1,11) if i%2==0] # 保留偶数
print(lst3) # 输出列表，类型是list

#2.元组推导式：：元组是没办法直接使用推到式生成的
t1=(1,2,3,4,5,6,7,8,9,10) # 定义一个元组，里面包含1到10的数字
print(t1,type(t1)) # 输出元组，类型是tuple
#2.2使用推导式创建元组：从1-10的元组
t2=tuple(i for i in range(1,11)) # 定义一个元组，里面包含1到10的数字，元组的名称是t2
print(t2,type(t2)) # 输出元组，类型是tuple
#2.3使用推导式创建元组：从1-10的元组，但是只保留偶数
t3=tuple(i for i in range(1,11) if i%2==0) # 定义一个元组，里面包含1到10的数字，元组的名称是t3
#range()函数的作用是生成一个整数序列，这个整数序列是从1开始，到11结束，不包含11，步长是1。
print(t3,type(t3)) # 输出元组，类型是tuple

#3.字典推导式
#3.1使用原始的方式创建字典
d1={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6,'g':7,'h':8,'i':9,'j':10} # 定义一个字典，里面包含1到10的数字，字典的名称是d1
print(d1,type(d1)) # 输出字典，类型是dict
#3.2使用推导式创建字典
list1=['a','b','c','d','e','f','g','h','i','j'] # 定义一个列表，里面包含1到10的数字，列表的名称是list1
list2=[1,2,3,4,5,6,7,8,9,10] # 定义一个列表，里面包含1到10的数字，列表的名称是list2
d2={key:value for key,value in zip(list1,list2)} # 定义一个字典，里面包含1到10的数字，字典的名称是d2
#zip()函数的作用是将两个列表中的元素一一对应，组成一个元组，然后将这些元组组成一个新的列表。
print(d2,type(d2)) # 输出字典，类型是dict


#4.集合推导式：
#4.1使用原始的方式创建集合：从1-10的集合
s1={1,2,3,4,5,6,7,8,9,10} # 定义一个集合，里面包含1到10的数字，集合的名称是s1
print(s1,type(s1)) # 输出集合，类型是set
#4.2使用推导式创建集合：从1-10的集合
s2={i for i in range(1,11) } # 定义一个集合，里面包含1到10的数字，集合的名称是s2
print(s2,type(s2)) # 输出集合，类型是set
#4.3使用推导式创建集合：从1-10的集合，但是只保留偶数
s3={i for i in range(1,11) if i%2==0} # 定义一个集合，里面包含1到10的数字，集合的名称是s2
print(s3,type(s2)) # 输出集合，类型是set

